package org.example;

import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

public class IO_Demo20 {
    public static void main(String[] args) {
        //解压流  压缩包里面的文件和文件夹都是一个zipentry对象

        //创建一个file表示要解压的文件压缩包
        File src=new File("D:\\压缩包名.zip");
        File dest=new File("D:\\");
    }
    public static void unzip(File src,File dest) throws IOException {
        //创建一个解压缩流来读取压缩包
        ZipInputStream zip=new ZipInputStream(new FileInputStream(src));
        ZipEntry entry;
        //先获取压缩包里面的所有文件和文件夹 zipentry对象
        while((entry=zip.getNextEntry())!=null){
            System.out.println(entry);
            if(entry.isDirectory()){
                //文件夹，需要在目标目录下创建一个文件夹
                File file=new File(dest,entry.toString());
                //创建文件夹
                file.mkdirs();
            }else{
                //文件，需要在目标目录下创建一个文件
                FileOutputStream fos=new FileOutputStream(new File(dest,entry.toString()));
                int len;
                while((len=zip.read())!=-1){
                    fos.write(len);
                }
                fos.close();
                zip.closeEntry();
            }
        }
        zip.close();
    }
}
